home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / netinet / tcp.h < prev    next >
C/C++ Source or Header  |  1988-06-29  |  2KB  |  89 lines

  1. /*
  2.  * Copyright (c) 1982, 1986 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that this notice is preserved and that due credit is given
  7.  * to the University of California at Berkeley. The name of the University
  8.  * may not be used to endorse or promote products derived from this
  9.  * software without specific prior written permission. This software
  10.  * is provided ``as is'' without express or implied warranty.
  11.  *
  12.  *    @(#)tcp.h    7.4.1.1 (Berkeley) 2/7/88
  13.  */
  14.  
  15. #ifndef _TCP
  16. #define _TCP
  17.  
  18. #ifndef BYTE_ORDER
  19. /*
  20.  * Definitions for byte order,
  21.  * according to byte significance from low address to high.
  22.  */
  23. #define    LITTLE_ENDIAN    1234    /* least-significant byte first (vax) */
  24. #define    BIG_ENDIAN    4321    /* most-significant byte first (IBM, net) */
  25. #define    PDP_ENDIAN    3412    /* LSB first in word, MSW first in long (pdp) */
  26.  
  27. #ifdef vax
  28. #define    BYTE_ORDER    LITTLE_ENDIAN
  29. #else
  30. #define    BYTE_ORDER    BIG_ENDIAN    /* mc68000, tahoe, most others */
  31. #endif
  32. #endif BYTE_ORDER
  33.  
  34. typedef    u_long    tcp_seq;
  35. /*
  36.  * TCP header.
  37.  * Per RFC 793, September, 1981.
  38.  */
  39. struct tcphdr {
  40.     u_short    th_sport;        /* source port */
  41.     u_short    th_dport;        /* destination port */
  42.     tcp_seq    th_seq;            /* sequence number */
  43.     tcp_seq    th_ack;            /* acknowledgement number */
  44. #if BYTE_ORDER == LITTLE_ENDIAN
  45.     u_char    th_x2:4,        /* (unused) */
  46.         th_off:4;        /* data offset */
  47. #endif
  48. #if BYTE_ORDER == BIG_ENDIAN
  49.     u_char    th_off:4,        /* data offset */
  50.         th_x2:4;        /* (unused) */
  51. #endif
  52.     u_char    th_flags;
  53. #define    TH_FIN    0x01
  54. #define    TH_SYN    0x02
  55. #define    TH_RST    0x04
  56. #define    TH_PUSH    0x08
  57. #define    TH_ACK    0x10
  58. #define    TH_URG    0x20
  59.     u_short    th_win;            /* window */
  60.     u_short    th_sum;            /* checksum */
  61.     u_short    th_urp;            /* urgent pointer */
  62. };
  63.  
  64. #define    TCPOPT_EOL    0
  65. #define    TCPOPT_NOP    1
  66. #define    TCPOPT_MAXSEG    2
  67.  
  68. /*
  69.  * Default maximum segment size for TCP.
  70.  * With an IP MSS of 576, this is 536,
  71.  * but 512 is probably more convenient.
  72.  */
  73. #ifdef    lint
  74. #define    TCP_MSS    536
  75. #else
  76. #ifndef IP_MSS
  77. #define    IP_MSS    576
  78. #endif
  79. #define    TCP_MSS    MIN(512, IP_MSS - sizeof (struct tcpiphdr))
  80. #endif
  81.  
  82. /*
  83.  * User-settable options (used with setsockopt).
  84.  */
  85. #define    TCP_NODELAY    0x01    /* don't delay send to coalesce packets */
  86. #define    TCP_MAXSEG    0x02    /* set maximum segment size */
  87.  
  88. #endif _TCP
  89.